home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 5 / Amiga Plus Sonderheft 1996 #5.iso / programme / picturedt_v43 / demo / pbm / pbmbase.c < prev    next >
C/C++ Source or Header  |  1986-04-25  |  2KB  |  99 lines

  1.  
  2. #include "PBM.h"
  3.  
  4. struct ExecBase *SysBase;
  5. struct GfxBase *GfxBase;
  6. struct IntuitionBase *IntuitionBase;
  7. struct DosLibrary *DOSBase;
  8. struct Library *SuperClassBase,*DataTypesBase,*UtilityBase,*IFFParseBase;
  9.  
  10. LONG __stdargs ReleasePBMBase(struct PBMBase *PBMBase)
  11.  
  12. {
  13.  if (!FreeClass(PBMBase->PB_Class))
  14.   {
  15.    AddClass (PBMBase->PB_Class);
  16.    return FALSE;
  17.   }
  18.  
  19.  CloseLibrary (SuperClassBase);
  20.  CloseLibrary (IFFParseBase);
  21.  CloseLibrary (UtilityBase);
  22.  CloseLibrary (DataTypesBase);
  23.  CloseLibrary (&DOSBase->dl_lib);
  24.  CloseLibrary (&IntuitionBase->LibNode);
  25.  CloseLibrary (&GfxBase->LibNode);
  26.  
  27.  return TRUE;
  28. }
  29.  
  30. ULONG __asm __saveds DisPatch(REG(a0) Class *C,REG(a2) Object *O,REG(a1) Msg M)
  31.  
  32. {
  33.  ULONG Result;
  34.  
  35.  if (M->MethodID==OM_NEW)
  36.   {
  37.    if (Result=DoSuperMethodA(C,O,M))
  38.     if (!ReadPBM(C,(Object *)Result,((struct opSet *)M)->ops_AttrList))
  39.      {
  40.       CoerceMethod (C,(Object *)Result,OM_DISPOSE);
  41.       Result=0L;
  42.      }
  43.   }
  44.  else Result=DoSuperMethodA(C,O,M);
  45.  
  46.  return Result;
  47. }
  48.  
  49. Class __regargs *InitClass(struct PBMBase *PBMBase)
  50.  
  51. {
  52.  Class *PBMClass;
  53.  
  54.  if (PBMClass=MakeClass(PBMDTCLASS,PICTUREDTCLASS,NULL,0L,0L))
  55.   {
  56.    PBMClass->cl_Dispatcher.h_Entry=(ULONG (*)())DisPatch;
  57.    PBMClass->cl_UserData=(ULONG)PBMBase;
  58.    AddClass (PBMClass);
  59.   }
  60.  return PBMClass;
  61. }
  62.  
  63. struct PBMBase __stdargs *InitPBMBase(struct PBMBase *PBMBase)
  64.  
  65. {
  66.  if (GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",39L))
  67.   {
  68.    if (IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",39L))
  69.     {
  70.      if (DOSBase=(struct DosLibrary *)OpenLibrary("dos.library",39L))
  71.       {
  72.        if (DataTypesBase=OpenLibrary("datatypes.library",39L))
  73.         {
  74.          if (UtilityBase=OpenLibrary("utility.library",39L))
  75.           {
  76.            if (IFFParseBase=OpenLibrary("iffparse.library",39L))
  77.             {
  78.              if (SuperClassBase=OpenLibrary("datatypes/picture.datatype",43L))
  79.               {
  80.                if (PBMBase->PB_Class=InitClass(PBMBase)) return PBMBase;
  81.  
  82.                CloseLibrary (SuperClassBase);
  83.               }
  84.              CloseLibrary (IFFParseBase);
  85.             }
  86.            CloseLibrary (UtilityBase);
  87.           }
  88.          CloseLibrary (DataTypesBase);
  89.         }
  90.        CloseLibrary (&DOSBase->dl_lib);
  91.       }
  92.      CloseLibrary (&IntuitionBase->LibNode);
  93.     }
  94.    CloseLibrary (&GfxBase->LibNode);
  95.   }
  96.  
  97.  return NULL;
  98. }
  99.